﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using RTSoft.SoureCode.Control.HangHoa;
using RTSoft.SoureCode.Control.XuatXu;
using DevExpress.XtraEditors.Repository;
using RTSoft.SoureCode.Control.NhaSanXuat;
using RTSoft.SoureCode.Control.LoaiHang;
using RTSoft.SoureCode.Control.NhatKyNhap;
using RTSoft.Modules;

namespace RTSoft.SoureCode.Entity
{
    public partial class frmNhapHang : DevExpress.XtraEditors.XtraForm
    {
        public frmNhapHang()
        {
            InitializeComponent();
        }

        DataTable tbl;
        String errConnect;
        String errSQL;

        #region "Event Button"
        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (GridView1.FocusedRowHandle >= 0)
                {
                    int id = Convert.ToInt32(GridView1.GetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns["id_nhap"].FieldName));
                    errConnect = "";
                    errSQL = "";
                    string strName = GridView1.GetRowCellValue(GridView1.FocusedRowHandle, GridView1.Columns["ten_mathang"].FieldName).ToString();
                    Boolean result = Library.ShowQuestionMessage("Bạn có chắc xóa " + strName + " ?");
                    if (result == false)
                    {
                        return;
                    }
                    nhatkynhapctrl ctrl = new nhatkynhapctrl();
                    ctrl.Delete(ref errConnect, ref errSQL, id);
                    if (errSQL != "")
                    {
                        Library.ShowMessage("Không thể xóa!");
                    }
                    else
                    {
                        GridView1.DeleteSelectedRows();
                        GridView1.RefreshData();
                    }
                }
            }
            catch (Exception ex)
            {
                Library.ShowMessage(ex.ToString());
            }
        }

        private void btnExcel_Click(object sender, EventArgs e)
        {
            Library.ExportToExcel(this, "Danh Sách Hàng Nhập", GridView1);
        }
        #endregion

        private void frmNhapHang_Load(object sender, EventArgs e)
        {
            try
            {
                this.InitGrid();
            }
            catch
            {
                Library.ShowMessage("Lỗi dữ liệu đầu vào!");
            }
        }

        public void InitGrid()
        {
            tbl = new DataTable();
            errConnect = "";
            errSQL = "";
            nhatkynhapctrl ctrl = new nhatkynhapctrl();
            ctrl.getData(ref errConnect, ref errSQL, ref tbl);
            GridControl1.DataSource = tbl;
            GridView1.Columns["id_nhap"].Caption = "ID";
            GridView1.Columns["id_mathang"].Caption = "Mặt Hàng";
            GridView1.Columns["ten_mathang"].Visible = false;
            GridView1.Columns["soluong"].Caption = "Số lượng";
            GridView1.Columns["ngaynhap"].Caption = "Ngày nhập";
            GridView1.Columns["ngaynhap"].OptionsColumn.ReadOnly = true;
            GridView1.Columns["id_nv"].Visible = false;            
            GridView1.Columns["ten_nv"].Visible = false;
            GridView1.Columns["id_nhap"].Visible = false;

            RepositoryItemGridLookUpEdit riCombo = new RepositoryItemGridLookUpEdit();
            hanghoactrl ctrlItem = new hanghoactrl();
            DataTable tblItem = new DataTable();
            ctrlItem.getDataBySelect(ref errConnect, ref errSQL, ref tblItem, "ID_MATHANG,TEN_MATHANG");
            riCombo.DataSource = tblItem;
            riCombo.DisplayMember = "TEN_MATHANG";
            riCombo.ValueMember = "ID_MATHANG";
            riCombo.View.Columns["ID_MATHANG"].Visible = false;
            riCombo.View.Columns["ID_MATHANG"].Caption = "Tên mặt hàng";
            riCombo.View.OptionsFilter.AllowFilterEditor = true;
            riCombo.View.OptionsView.ShowAutoFilterRow = true;
            riCombo.View.Columns["ID_MATHANG"].OptionsFilter.AutoFilterCondition = DevExpress.XtraGrid.Columns.AutoFilterCondition.Contains;
            GridControl1.RepositoryItems.Add(riCombo);
            GridView1.Columns["id_mathang"].ColumnEdit = riCombo;

            RepositoryItemDateEdit riDate = new RepositoryItemDateEdit();
            riDate.ShowClear = true;
            riDate.ShowToday = true;
            riDate.EditMask = "dd/MM/yyyy HH:mm:ss";
            riDate.Mask.UseMaskAsDisplayFormat = true;
            GridView1.Columns["ngaynhap"].ColumnEdit = riDate;
            GridControl1.RepositoryItems.Add(riDate);
            GridView1.Columns["ngaynhap"].ColumnEdit = riDate;

            GridView1.BestFitColumns();
        }

        private void GridView1_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            try
            {
                nhatkynhapctrl ctrl = new nhatkynhapctrl();
                nhatkynhapinfo info = new nhatkynhapinfo();
                hanghoactrl itemctrl = new hanghoactrl();
                hanghoainfo item = new hanghoainfo();
                errConnect = "";
                errSQL = "";
                DataRow row = GridView1.GetDataRow(e.RowHandle);
                // Lấy thông tin hàng hóa theo id
                item = itemctrl.getItembyID(ref errConnect, ref errSQL, Convert.ToInt32(RTValidate.CheckNull(row[1])));

                info.id_nhap = Convert.ToInt32(RTValidate.CheckNull(row["id_nhap"]));
                info.id_mathang = Convert.ToInt32(RTValidate.CheckNull(row["id_mathang"]));
                info.ten_mathang = item.TEN_MATHANG;
                info.soluong = Convert.ToInt32(RTValidate.CheckNull(row["soluong"]));
                /* Cập nhật lại số lượng của mặt hàng
                 * * - Cộng số lượng vào số lượng tồn (soluongmin) và cập nhật số lượng max (sl tổng)
                 * * - Sau đó insert vào bảng nhật ký nhập thông tin nhập hàng
                 * */
                item.SOLUONG_MIN += Convert.ToInt32(RTValidate.CheckNull(row["soluong"]));
                item.SOLUONG_MAX += Convert.ToInt32(RTValidate.CheckNull(row["soluong"]));
                row["ngaynhap"] = DateTime.Now;
                info.ngaynhap = Convert.ToDateTime(row["ngaynhap"]);
                info.id_nv = Convert.ToInt32(RTValidate.CheckNull(row["id_nv"]));
                info.ten_nv = RTValidate.RTUser;
                if (info.id_nhap != 0)
                {
                    Library.ShowMessage("Vui lòng nhập mới!");                    
                }
                else
                {
                    ctrl.Insert(ref errConnect, ref errSQL, info);
                    //Cập nhật lại số lượng của mặt hàng
                    itemctrl.Update(ref errConnect, ref errSQL, item);
                }
                this.InitGrid();
            }
            catch (Exception ex)
            {
                Library.ShowMessage(ex.ToString());
            }
        }

        private void GridView1_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            GridView1.SetRowCellValue(e.RowHandle, "ngaynhap", DateTime.Now);    
        }

       

       
      

    }
}